//
//  SINAStuDateItemFlowLayout.m
//  sinashebao
//
//  Created by  androidlongs on 2018/1/15.
//  Copyright © 2018年  androidlongs. All rights reserved.
//

#import "SINAStuDateItemFlowLayout.h"


@interface SINAStuDateItemFlowLayout()
@end
@implementation SINAStuDateItemFlowLayout

//重写prepareLayout方法进行基本的布局（cell在最左面的时候是在正中间），不能在init中布局，因为设置collectionView尺寸是在viewDidLoad中，而init在它之前调用，获得的collectionView的尺寸是空的
-(void)prepareLayout{
    [super prepareLayout];
    
    //self.collectionView.contentOffset = self.offsetpoint;
    //水平滚动
    self.scrollDirection = UICollectionViewScrollDirectionHorizontal;
}
//当collectionView的显示范围发生改变的时候，让其内部重新布局（即让cell滚动起来）
-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{
    return YES;
}

//让cell在左右滑动的时候，尺寸放大或缩小
-(NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{
    //让父类布局好样式
    NSArray *arr = [super layoutAttributesForElementsInRect:rect];
    //计算出collectionView的中心的位置
    CGFloat ceterX = self.collectionView.contentOffset.x + self.collectionView.frame.size.width * 0.5;
    /**
     * 1.一个cell对应一个UICollectionViewLayoutAttributes对象
     * 2.UICollectionViewLayoutAttributes对象决定了cell的frame
     */
    for (UICollectionViewLayoutAttributes *attributes in arr) {
        //cell的中心点距离collectionView的中心点的距离，注意ABS()表示绝对值
//        CGFloat delta = ABS(attributes.center.x - ceterX);
        //设置缩放比例
        //CGFloat scale = 1.1 - delta / self.collectionView.frame.size.width;
        CGFloat scale=1;
        //设置cell滚动时候缩放的比例
        attributes.transform = CGAffineTransformMakeScale(scale, scale);
        attributes.alpha=scale;
    }
    
    return arr;
}
//让最接近中心的cell在停在正中央
-(CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset{
    // 计算出最终显示的矩形框
    CGRect rect;
    rect.origin.y = 0;
    rect.origin.x = proposedContentOffset.x;
    rect.size = self.collectionView.frame.size;
    
    //获得super已经计算好的布局的属性
    NSArray *arr = [super layoutAttributesForElementsInRect:rect];
    
    //计算collectionView最中心点的x值
    CGFloat centerX = proposedContentOffset.x + self.collectionView.frame.size.width * 0.5;
    
    CGFloat minDelta = MAXFLOAT;
    for (UICollectionViewLayoutAttributes *attrs in arr) {
        if (ABS(minDelta) > ABS(attrs.center.x - centerX)) {
            minDelta = attrs.center.x - centerX;
        }
    }
    proposedContentOffset.x += minDelta;
    DLog(@"滑动停止");
    return proposedContentOffset;
}
@end
